using System;
using System.Collections.Generic;

namespace Rensselaer_Event_Finder
{
    public class Event
    {
        private int id;
        private Location location;
        private string description;
        private string website;
        private string phone;
        private string name;
        private string email;
        private string image_url;
        private string price;
        private DateTime startTime;
        private DateTime endTime;
        private IList<Category> categories;
        private IList<EventComment> comments;
        private IList<User> users;
        private DateTime createdTime;
        private DateTime editedTime;


        public Event()
        {
            this.categories = new List<Category>();
            this.comments = new List<EventComment>();
            this.users = new List<User>();
        }

        public virtual Location Location
        {
            get { return location; }
            set { location = value; }
        }

        public virtual int Id
        {
            get { return id; }
            set { id = value; }
        }

        public virtual string Name
        {
            get { return name; }
            set { name = value; }
        }

        public virtual string Image_url
        {
            get { return image_url; }
            set { image_url = value; }
        }

        public virtual string Description
        {
            get { return description; }
            set { description = value; }
        }

        public virtual string Website
        {
            get { return website; }
            set { website = value; }
        }

        public virtual string Phone
        {
            get { return phone; }
            set { phone = value; }
        }
        public virtual string Price
        {
            get { return price; }
            set { price = value; }
        }
        public virtual string Email
        {
            get { return email; }
            set { email = value; }
        }

        public virtual DateTime StartTime
        {
            get { return startTime; }
            set { startTime = value; }
        }

        public virtual DateTime EndTime
        {
            get { return endTime; }
            set { endTime = value; }
        }

        public virtual IList<Category> Categories
        {
            get { return categories; }
            set { categories = value; }
        }

        public virtual void AddCategory(Category category)
        {
            categories.Add(category);
        }

        public virtual IList<EventComment> Comments
        {
            get { return comments; }
            set { comments = value; }
        }
        public virtual IList<User> Users
        {
            get { return users; }
            set { users = value; }
        }

        public virtual void AddComment(EventComment comment)
        {
            comments.Add(comment);
        }
        public virtual DateTime CreatedTime
        {
            get { return createdTime; }
            set { createdTime = value; }
        }

        public virtual DateTime EditedTime
        {
            get { return editedTime; }
            set { editedTime = value; }
        }
    }

}
